const { getAllGouwu, delGouwu } = require('../../api/shop');

Page({
  data: {
    cart: [], // 购物车数据
    isAllChecked: false, // 全选状态
    totalPrice: 0, // 总价格
    activeButton: { index: +1, type: '' }, // 记录按钮状态
  },

  onLoad(options) {
    // 初始化页面参数
    this.setData({
      detail_id: options.id,
    });

    // 从本地存储获取userid
    const userId = wx.getStorageSync('userid');

    // 获取购物车数据
    getAllGouwu(res => {
      // 判断数据库中数据的userid与本地存储的userid是否一致
      const filteredCart = res.data.list.filter(item => item.userid === userId);

      if (filteredCart.length > 0) {
        this.setData({
          cart: filteredCart
        });
        this.updateTotalPrice();
      }
    }, options.page);
  },

  onShow() {
    // 页面每次显示时重新加载数据
    const userId = wx.getStorageSync('userid');

    // 获取购物车数据
    getAllGouwu(res => {
      // 判断数据库中数据的userid与本地存储的userid是否一致
      const filteredCart = res.data.list.filter(item => item.userid === userId);

      if (filteredCart.length > 0) {
        this.setData({
          cart: filteredCart
        });
        this.updateTotalPrice();
      }
    });
  },

  // 更新总价格和全选状态
  updateTotalPrice() {
    let totalPrice = 0;
    let isAllChecked = true;

    this.data.cart.forEach(item => {
      if (item.checked) {
        totalPrice += item.cartItem.price * item.cartItem.count;
      } else {
        isAllChecked = false;
      }
    });

    this.setData({
      totalPrice,
      isAllChecked: this.data.cart.length > 0 ? isAllChecked : false
    });
  },

  // 单个商品选中状态切换
  onItemChange(e) {
    const index = e.currentTarget.dataset.index;
    const key = `cart[${index}].checked`;
    this.setData({
      [key]: !this.data.cart[index].checked
    });
    this.updateTotalPrice();
  },

  // 全选切换
  onAllChange() {
    const isAllChecked = !this.data.isAllChecked;
    const updatedCart = this.data.cart.map(item => {
      item.checked = isAllChecked;
      return item;
    });

    this.setData({
      cart: updatedCart,
      isAllChecked
    });
    this.updateTotalPrice();
  },

  // 删除商品
  onDeleteItem(e) {
    const index = e.currentTarget.dataset.index;
    const { cart } = this.data;
    const itemId = cart[index]._id; // 假设订单商品的唯一标识是 _id
    console.log(cart[index]._id);

    // 弹出确认删除的提示框
    wx.showModal({
      title: '确认删除',
      content: '您确定要删除这个商品吗？',
      success: (res) => {
        if (res.confirm) {
          // 如果点击了确认
          wx.request({
            method: 'POST',
            url: 'http://localhost:3000/api/delGouwu',
            data: {
              id: itemId
            },
            success: (res) => {
              if (res.statusCode === 200) {
                const updatedCart = cart.filter((_, i) => i !== index);
                this.setData({
                  cart: updatedCart
                });
                this.updateTotalPrice();
                wx.showToast({
                  title: '删除成功',
                  icon: 'success'
                });
              } else {
                wx.showToast({
                  title: '取消删除',
                  icon: 'none'
                });
              }
            },
            fail: () => {
              wx.showToast({
                title: '网络错误，请稍后重试',
                icon: 'none'
              });
            }
          });
        } else if (res.cancel) {
          // 如果点击了取消
          wx.showToast({
            title: '已取消删除',
            icon: 'none'
          });
        }
      }
    });
  },

  // 减少商品数量
  onDecrease(event) {
    const { index } = event.currentTarget.dataset;
    const { cart } = this.data;
    if (cart[index].cartItem.count > 1) {
      cart[index].cartItem.count -= 1;
      this.setData({
        cart,
        activeButton: {
          index,
          type: 'minus'
        },
      });
      this.updateTotalPrice();
      setTimeout(() => {
        this.setData({
          activeButton: {
            index: -1,
            type: ''
          },
        });
      }, 200);
    } else {
      wx.showToast({
        title: '至少选择一件商品',
        icon: 'none',
      });
    }
  },

  // 增加商品数量
  onIncrease(event) {
    const { index } = event.currentTarget.dataset;
    const { cart } = this.data;
    cart[index].cartItem.count += 1;
    this.setData({
      cart,
      activeButton: {
        index,
        type: 'plus'
      },
    });
    this.updateTotalPrice();
    setTimeout(() => {
      this.setData({
        activeButton: {
          index: -1,
          type: ''
        },
      });
    }, 200);
  },

  // 提交订单
  onSubmit() {
    if (this.data.cart.length === 0 || this.data.totalPrice === 0) {
      wx.showToast({
        title: '购物车为空或未选择商品',
        icon: 'none'
      });
      return;
    }

    // 获取选择的地址和购物车中选中的商品
    const selectedItems = this.data.cart.filter(item => item.checked);  // 只获取选中的商品
    const orderData = {
      // address: this.data.address,  // 用户选择的地址
      cart: selectedItems,  // 选中的商品
      totalPrice: this.data.totalPrice  // 总价格
    };

    // 向后台发送请求
    wx.navigateTo({
      url: `/pages/purchase/purchase?orderData=${encodeURIComponent(JSON.stringify(orderData))}`
    });
  },
});
